Mit diesen Projekten können wir uns sehen lassen
Wie machen wir Gewässer besser? Wie erreichen wir eine gute Wasserqualität? Diese beiden Projekte geben Ihnen weitere Einblicke.
The following has evaluated to null or missing: ==> formField.getValue().getString(locale) [in template "blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" at line 56, column 49] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign Bildnachweis = formField.getV... [in template "blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" in function "getCopyrightText" at line 56, column 25] ----
1<#import "/blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" as common>
2
3<#assign layoutService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") />
4<#assign namespace = randomNamespace />
5
6<section class="slider-hero ${(SliderTyp??)?then(SliderTyp.getData(), "")}" id="slider_${namespace}">
7 <div class="slides-list">
8
9 <#list Slide.getSiblings() as curSlide>
10
11 <#assign hasLink = false />
12 <#assign linkTarget = "" />
13 <#assign linkHref= "" />
14 <#assign linkText = "weiterlesen" />
15 <#assign linkTitle = "Artikel weiterlesen" />
16 <#assign slideUniqueId = namespace + '_' + curSlide?index />
17
18
19 <#if curSlide.Headline?? && curSlide.Headline.getData()?has_content>
20 <#assign AltText = curSlide.Headline.getData() />
21 </#if>
22
23 <#assign Copyright = "" />
24 <#if (common.getCopyrightText(curSlide.Image.data)!"") != "">
25 <#assign Copyright = common.getCopyrightTag("",curSlide.Image.data) />
26 </#if>
27
28 <div class="slide" role="group" aria-label="Folie ${curSlide?index + 1} von ${Slide.siblings?size}">
29 <div class="slide-content">
30 <#if (curSlide.Youtube?? && curSlide.Youtube.getData()?has_content) && (curSlide.Image?? && curSlide.Image?has_content)>
31 <#assign videoId = curSlide.Youtube.getData()/>
32
33 <#if videoId?starts_with("http")>
34 <#assign videoId = videoId?split("/")[3]>
35 </#if>
36
37 <div class="slide-content-video video" id="video_${slideUniqueId}">
38 <img src="${common.getScaledImageURL(curSlide.Image.getData())}" data-src="${common.getScaledImageURL(curSlide.Image.getData())}" class="slide__image video-preview-image" id="video-preview-image_${slideUniqueId}" alt="${common.getAltText(curSlide.Image.data, AltText)}" loading="lazy"/>
39 <div class="video-trigger-overlay video-trigger " id="video-trigger_${slideUniqueId}" data-tns-slide="tns1-item${curSlide?index}" data-videoid="${slideUniqueId}" data-source="${videoId}" title="Video abspielen">
40 <p class="text-center video-trigger-overlay-text video-trigger" data-videoid="${slideUniqueId}" >
41 Um das Video zu sehen, müssen Sie dieses Feld durch einen Klick aktivieren. Dadurch werden
42 Informationen an Youtube übermittelt und unter Umständen dort verarbeitet. Bitte beachten Sie unsere
43 Hinweise und Informationen zum <a href="/datenschutz" target="_blank"
44 class="no-icon">Datenschutz</a>.
45 </p>
46 <span class="icon-bg icon-bg--play video-trigger" data-videoid="${slideUniqueId}" ></span>
47 </div>
48 <div class="video-layer" style="display: none" id="video-layer_${slideUniqueId}">
49 <iframe class="video-frame" src="about:blank" allowfullscreen="" height="530" id="iframe_${slideUniqueId}"></iframe>
50 </div>
51 </div>
52 <#elseif (curSlide.Panopto_Link?? && curSlide.Panopto_Link.getData()?has_content)>
53 <#assign panoptoId = getPanoptoId(curSlide.Panopto_Link.getData()) />
54
55 <#if panoptoId?has_content>
56 <div class="slide-content-video video panopto-video" id="video_${slideUniqueId}">
57 <div class="embed-container">
58 <iframe
59 src="https://videoplattform.lubw.baden-wuerttemberg.de/Panopto/Pages/Embed.aspx?id=${panoptoId}&autoplay=false&offerviewer=false&showtitle=true&showbrand=false&start=0&interactivity=none"
60 title="${AltText}"
61 >
62 </iframe>
63 </div>
64 </div>
65 </#if>
66 <#else>
67 <div class="slide-content-image image-with-caption">
68 <img src="${common.getScaledImageURL(curSlide.Image.getData())}" data-src="${common.getScaledImageURL(curSlide.Image.getData())}" class="slide__image" alt="${common.getAltText(curSlide.Image.data, AltText)}" loading="lazy"/>
69 ${Copyright}
70 </div>
71 </#if>
72 </div>
73 </div>
74
75 </#list>
76 </div>
77</section>
78
79<script>
80
81 var updateIframeHeight = function() {
82 var dwidth = window.innerWidth;
83 var videoHeight = dwidth*0.5625;
84
85 /*
86 if (dwidth > 1600) {
87 videoHeight = dwidth*0.40;
88 }
89 */
90
91 var videoFrames = document.getElementsByClassName('video-frame');
92 for (var i=0; i < videoFrames.length;i++) {
93 videoFrames[i].setAttribute('height',videoHeight);
94 videoFrames[i].style.height = videoHeight+'px';
95 }
96 }
97
98 var updateVideoWrapper = function () {
99
100 var triggers = document.getElementsByClassName('video-trigger');
101
102 for (var i=0; i < triggers.length;i++) {
103 triggers[i].addEventListener('click',function(e) {
104
105 var triggersTarget = this.getAttribute('data-videoid');
106 var tnsSlide = this.getAttribute('data-tns-slide');
107
108 var youtubeId = document.querySelector("#" + tnsSlide + ' #video-trigger_'+triggersTarget).getAttribute('data-source');
109 var videoLayer = document.querySelector("#" + tnsSlide + ' #video-layer_'+triggersTarget);
110 var iframe = document.querySelector("#" + tnsSlide + ' #iframe_'+triggersTarget);
111 iframe.setAttribute('src', 'https://www.youtube-nocookie.com/embed/' + youtubeId + '?autoplay=1&rel=0&cc_load_policy=1&modestbranding=0&enablejsapi=1');
112
113 document.querySelector("#" + tnsSlide + ' #video-preview-image_'+triggersTarget).style.display='none';
114 document.querySelector("#" + tnsSlide + ' #video-trigger_'+triggersTarget).style.display='none';
115 videoLayer.style.display='block';
116 });
117 }
118 };
119
120 window.addEventListener("load", function () {
121 updateVideoWrapper();
122 updateIframeHeight();
123 });
124
125 window.addEventListener("resize", function () {
126 updateIframeHeight();
127 });
128
129 // Liferay.on('endNavigate', updateVideoWrapper);
130 // $(document).ready(updateVideoWrapper);
131
132 window.addEventListener("load", function () {
133 function ${namespace}_updateInfo(info) {
134 for (var i = 0; i < info.navItems.length; i++) {
135 info.navItems[i].setAttribute('aria-label','Folie ' + (i+1));
136 }
137
138 info.navItems[info.navCurrentIndex].setAttribute('aria-label','Folie ' + (info.navCurrentIndex + 1) + ' (aktuell)');
139
140 info.controlsContainer.setAttribute('aria-label', 'Navigationselemente');
141 info.prevButton.setAttribute('aria-label','zur vorhergehenden Folie springen');
142 info.nextButton.setAttribute('aria-label','zur nächsten Folie springen');
143 info.navContainer.setAttribute('aria-label','Auswahl der Folien')
144 }
145
146 const imgStyle = document.querySelector('.image-slider-style');
147
148 var slider = tns({
149 container: '#slider_${namespace} .slides-list',
150 items: 1,
151 slideBy: 'page',
152 center: true,
153 controlsPosition: 'bottom',
154 navPosition: 'bottom',
155 touch: true,
156 mouseDrag: true,
157 freezable: true,
158 speed: 600,
159 loop: false,
160 arrowKeys: true,
161 lazyload: true,
162 autoHeight: true,
163 lazyloadSelector: '.slide__image',
164 autoplay: !!imgStyle,
165 autoplayHoverPause: true,
166 autoplayTimeout: 3500,
167 autoplayText: [
168 "▶",
169 "❚❚"
170 ],
171 controlsText: ['<span class="icon-bg icon-bg--arrow2-left"></span>','<span class="icon-bg icon-bg--arrow2-right"></span>'],
172 onInit: function (info) {
173 ${namespace}_updateInfo(info);
174 }
175 });
176
177 slider.events.on('indexChanged', function(info) {
178 ${namespace}_updateInfo(info);
179 });
180
181 slider.events.on('transitionStart', function(info, eventName) {
182 var currentSlideId = '#tns1-item' + info.navCurrentIndex;
183
184 var otherSlides = info.container.querySelectorAll('.tns-item:not(' + currentSlideId + ')')
185
186 otherSlides.forEach(function(slide) {
187 var iframe = slide.querySelector( 'iframe');
188
189 if (iframe != null) {
190 var src = iframe.getAttribute('src');
191 if (src) {
192 if ((src.indexOf('youtube.com/embed') != -1) || (src.indexOf('youtube-nocookie.com/embed') != -1)) {
193 iframe.contentWindow.postMessage(JSON.stringify({
194 'event': 'command',
195 'func': 'pauseVideo',
196 'args': []
197 }), "*");
198 }
199 }
200 }
201 });
202 });
203 const mediaQuery = window.matchMedia('(max-width: 767px)')
204 if (mediaQuery.matches) {
205 const bulletList = document.querySelectorAll('.slider-hero .tns-nav');
206
207 bulletList.forEach(bullet => {
208 const slider = bullet.previousElementSibling.getBoundingClientRect();
209 const bulletNav = bullet.getBoundingClientRect();
210
211 const bulletNavTop = bulletNav.top;
212 const sliderTop = slider.top;
213
214 const arrowsPos = bulletNavTop - sliderTop - 5;
215
216 const prev = bullet.nextElementSibling.children[0];
217 const prevBtnWidth = prev.clientWidth;
218 const next = bullet.nextElementSibling.children[1];
219
220 const sliderControls = bullet.nextElementSibling;
221 const firstBulletLeftSpace = bullet.firstElementChild.offsetLeft;
222 const firstBulletWidth = bullet.firstElementChild.clientWidth;
223 const lastBulletLeftSpace = bullet.lastElementChild.offsetLeft;
224
225 const nextBtnPos = lastBulletLeftSpace + 59;
226 const prevBtnPos = firstBulletLeftSpace - prevBtnWidth - firstBulletWidth - 87;
227
228 const playPauseBtn = bullet.parentElement.firstElementChild;
229 const playPauseBtnLeftPos = lastBulletLeftSpace + 15;
230
231 sliderControls.style.top = arrowsPos + 'px';
232
233 next.style.left = nextBtnPos + 'px';
234
235 prev.style.left = prevBtnPos + 'px';
236
237 playPauseBtn.style.left = playPauseBtnLeftPos + 'px';
238
239 console.log(sliderControls.style.top);
240 });
241 }
242 });
243</script>
244
245<#function getPanoptoId url>
246 <#local result = url?matches("https?://videoplattform\\.lubw\\.baden-wuerttemberg\\.de/Panopto/Pages/(?:Embed|Viewer).aspx\\?id=(\\S*)$") />
247
248 <#if result>
249 <#return result?groups[1] />
250 </#if>
251
252 <#return "" />
253</#function>
Die revitalisierte Rems überzeugt mit Wasserqualität und Gewässerökologie
Vitale Gewässer sind vor allem für die dort lebenden Tiere und Pflanzen wichtig. Sie sorgen für den Erhalt der biologischen Vielfalt. Naturnahe Flüsse und Bäche sind aber auch für die Menschen von großem Nutzen – was uns oft gar nicht direkt bewusst ist. Wir unterschätzen häufig, welch hohen Naherholungswert vitale Gewässer für uns haben. Offensichtlicher ist dagegen der Nutzen bei Hochwasser. Denn vitale Gewässer schützen uns mit ihren natürlichen Überschwemmungsflächen vor einer Überflutung.
Die Rems lebt auf
Die Rems bei Winterbach zeigt sehr gut, welch großen Mehrwert dynamische Gewässer mit vielfältigen Strukturen für die Menschen vor Ort haben. Auf mehr als einem Kilometer Länge haben wir dem Fluss ein neues, naturnahes Bett gegeben. Zudem wurden Flachwasserbereiche und Kiesinseln angelegt und an steilen Ufern ein Lebensraum für die faszinierenden Eisvögel geschaffen. Die Rems hat hier ein neues Gesicht bekommen – und bietet nun eine neue Heimat für Tiere, Pflanzen und auch für die Menschen aus der Umgebung.
The following has evaluated to null or missing: ==> formField.getValue().getString(locale) [in template "blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" at line 56, column 49] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign Bildnachweis = formField.getV... [in template "blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" in function "getCopyrightText" at line 56, column 25] ----
1<#import "/blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" as common>
2
3<#assign namespace = randomNamespace
4 align = ""
5 AltText = ""
6/>
7
8<#assign Copyright = "" />
9<#assign CopyrightMobile = "" />
10<#if (common.getCopyrightText(Image.data)!"") != "">
11 <#assign Copyright = common.getCopyrightTag("",Image.data) />
12</#if>
13
14<#if Fullwidth?? && getterUtil.getBoolean(Fullwidth.getData())>
15 <#assign align = "image-large--fullwidth"/>
16 <@imageInner align/>
17 <#else>
18 <#assign align = "image-large--centered"/>
19 <div class="container">
20 <div class="row justify-content-center">
21 <div class="col-md-8">
22 <@imageInner align/>
23 </div>
24 </div>
25 </div>
26</#if>
27
28
29<#macro imageInner css>
30 <#assign isSVG = false />
31 <#if SVG?? && SVG.getData()?has_content>
32 <#assign isSVG = true>
33 <#elseif Image?? && Image.data?has_content>
34 <#if Image.data?contains(".svg")>
35 <#assign isSVG = true>
36 </#if>
37 </#if>
38
39 <#assign hasMobileImageClass= "" />
40 <#if ImageMobile?? && ImageMobile.getData()?has_content>
41 <#assign hasMobileImageClass= "image-with-mobile-alternative" />
42 <#if (common.getCopyrightText(ImageMobile.data)!"") != "">
43 <#assign CopyrightMobile = common.getCopyrightTag("",ImageMobile.data,"","mobile") />
44 </#if>
45 </#if>
46
47
48
49 <section class="image-large image-with-caption ${css} <#if isSVG>no-border</#if>" id="image-large_${namespace}">
50 <div class="image-inner ${hasMobileImageClass}">
51 <#if SVG?? && SVG.getData()?has_content>
52 <div class="slide-content-image no-border svg-image">
53 ${SVG.getData()}
54 </div>
55 <#else>
56 <#if Image?? && Image.getData()?has_content>
57 <#if Fullwidth?? && getterUtil.getBoolean(Fullwidth.getData())>
58 <#assign adaptiveImageFormat = "bg-image-large" />
59 <#else>
60 <#assign adaptiveImageFormat = "bg-image-medium" />
61 </#if>
62 <img src="${common.getScaledImageURL(Image.getData(), adaptiveImageFormat)}"
63 alt="${common.getAltText(Image.data)}"
64 class="image image--desktop"
65 loading="lazy"
66 />
67 ${Copyright}
68
69 <#if ImageMobile?? && ImageMobile.getData()?has_content>
70 <img src="${common.getScaledImageURL(ImageMobile.getData(), adaptiveImageFormat)}"
71 data-src="${common.getScaledImageURL(ImageMobile.getData(), adaptiveImageFormat)}"
72 class="image image--mobile"
73 alt="${AltText}"
74 loading="lazy"
75 />
76 ${CopyrightMobile}
77 </#if>
78
79 </#if>
80 </#if>
81 </div>
82 </section>
83</#macro>
„Ich bin mir sicher, dass Winterbach und das gesamte Remstal langfristig davon profitieren werden.“Sven Müller, Bürgermeister Gemeinde Winterbach
„Vor allem der neu geschaffene, naturbelassene Lebensraum für Flora und Fauna hat unsere Rems ökologisch enorm aufgewertet. Die Natur ist hier am Fluss zum besonderen Highlight geworden. Einwohnerinnen und Einwohner sowie zahlreiche Gäste aus nah und fern können die Rems nun intensiver erleben – vor allem auch deshalb, weil der Fluss an diesem Abschnitt kaum einsehbar war.
Ob beim Spaziergang, beim Joggen oder auf der Radtour, die Menschen haben die Möglichkeit, sich am Wasser zu erholen und dabei die Natur zu genießen. Winterbach und das gesamte Remstal werden langfristig davon profitieren.“
Vorbild Kläranlage Karlsruhe: Bessere Wasserqualität durch neue Filtrationsanlage
Wenn wir die Phosphorbelastungen im Gewässer reduzieren, verbessern wir die Lebensbedingungen für eine Vielzahl der dort lebenden Tiere und Pflanzen und bewirken eine größere Artenvielfalt. Am Beispiel der Kläranlage Karlsruhe zeigen wir, wie eine gute Phosphorelimination mit einer Flockungsfiltration umgesetzt wurde.
Zukunftsfähige Kläranlage für Karlsruhe
Die Flockungsfiltration ist ein chemisch/mechanisches Verfahren, um gezielt möglichst viel Phosphor und weitere Feststoffe aus dem Wasser zu entfernen. Durch die geregelte Zugabe von Eisensalzen werden im Abwasser Flocken gebildet (sogenannte Metall-Hydroxid-Flocken). Kommen diese Flocken mit dem Phosphor im Abwasser in Kontakt, verbinden sie sich zu Metall-Phosphorverbindungen, die dann zum Beispiel in einem Sandfilter entfernt werden können.
Dr. Frank Mentrup, Oberbürgermeister von Karlsruhe, meint: „Gerade mit diesem Baustein wird ein zukunftsgerichteter fortschrittlicher Weg mit Vorbildfunktion für den Gewässerschutz eingeschlagen. Mit diesem Verfahren gelingt es, Stoffe zu entfernen, die die Ökosysteme in den Gewässern beeinflussen und verändern. Die Entnahme von Spurenstoffen im Prozess der Abwasserreinigung ist ein erklärtes umweltpolitisches Ziel der Landesregierung. Die Ausbaumaßnahmen in der Karlsruher Kläranlage entsprechen diesen Zielvorgaben.“
The following has evaluated to null or missing: ==> formField.getValue().getString(locale) [in template "blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" at line 22, column 43] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign altTag = formField.getValue()... [in template "blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" in function "getAltText" at line 22, column 25] ----
1<#import "/blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" as common>
2
3<#assign layoutService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") />
4<#assign namespace = randomNamespace />
5<#assign AltText = "" />
6<#assign Copyright = "" />
7
8<#if AltTextImage?? && AltTextImage.getData()?has_content>
9 <#assign AltText = AltTextImage.data />
10</#if>
11
12<#assign AltText = common.getAltText(ImageLarge.data, AltText) />
13<#if (Button.ButtonStyle?? && Button.ButtonStyle.getData()?has_content)>
14 <#assign ButtonMarkup = common.getButtonMarkup(Button.ButtonInternalLink, Button.ButtonExternalLink, Button.ButtonText, Button.ButtonStyle.getData()) />
15 <#else>
16 <#assign ButtonMarkup = common.getButtonMarkup(Button.ButtonInternalLink, Button.ButtonExternalLink, Button.ButtonText) />
17</#if>
18
19<#if ImageLarge?? && ImageLarge.data?has_content && (common.getCopyrightText(ImageLarge.data)!"") != "">
20 <#assign Copyright = common.getCopyrightTag("",ImageLarge.data) />
21</#if>
22
23
24<section class="teaser">
25 <div class="colorable-bg">
26 <div class="container">
27 <div class="row justify-content-center">
28 <div class="col-md-6">
29 <section class="teaser__content">
30 <section class="image-large image-large--centered" id="image-large_${namespace}">
31 <div class="image-inner image-with-caption">
32 <#if SVG?? && SVG.getData()?has_content>
33 <div class="slide-content-image no-border svg-image">
34 ${SVG.getData()}
35 </div>
36 <#else>
37 <#if ImageLarge?? && ImageLarge.getData()?has_content>
38 <img src="${common.getScaledImageURL(ImageLarge.getData(), "bg-image-medium")}" alt="${common.getAltText(ImageLarge.data)}" class="image" loading="lazy"/>
39 ${Copyright}
40 </#if>
41 </#if>
42 </div>
43 </section>
44 <h2>${Headline.getData()}</h2>
45 <#if Text?? && Text.getData()?has_content>
46 <p class="teaser-text">
47 ${Text.getData()}
48 </p>
49 </#if>
50 <#if Button.ButtonInternalLink.getData()?has_content || Button.ButtonExternalLink.getData()?has_content>
51 <div class="button-area">
52 ${ButtonMarkup}
53 </div>
54 </#if>
55 </section>
56 </div>
57 </div>
58 </div>
59 </div>
60
61</section>
The following has evaluated to null or missing: ==> formField.getValue().getString(locale) [in template "blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" at line 22, column 43] ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign altTag = formField.getValue()... [in template "blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" in function "getAltText" at line 22, column 25] ----
1<#import "/blaues-gut-portal.web-resources_SERVLET_CONTEXT_/common_macros.ftl" as common>
2
3<#assign layoutService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService") />
4<#assign namespace = randomNamespace />
5<#assign AltText = "" />
6<#assign Copyright = "" />
7
8<#if AltTextImage?? && AltTextImage.getData()?has_content>
9 <#assign AltText = AltTextImage.data />
10</#if>
11
12<#assign AltText = common.getAltText(ImageLarge.data, AltText) />
13<#if (Button.ButtonStyle?? && Button.ButtonStyle.getData()?has_content)>
14 <#assign ButtonMarkup = common.getButtonMarkup(Button.ButtonInternalLink, Button.ButtonExternalLink, Button.ButtonText, Button.ButtonStyle.getData()) />
15 <#else>
16 <#assign ButtonMarkup = common.getButtonMarkup(Button.ButtonInternalLink, Button.ButtonExternalLink, Button.ButtonText) />
17</#if>
18
19<#if ImageLarge?? && ImageLarge.data?has_content && (common.getCopyrightText(ImageLarge.data)!"") != "">
20 <#assign Copyright = common.getCopyrightTag("",ImageLarge.data) />
21</#if>
22
23
24<section class="teaser">
25 <div class="colorable-bg">
26 <div class="container">
27 <div class="row justify-content-center">
28 <div class="col-md-6">
29 <section class="teaser__content">
30 <section class="image-large image-large--centered" id="image-large_${namespace}">
31 <div class="image-inner image-with-caption">
32 <#if SVG?? && SVG.getData()?has_content>
33 <div class="slide-content-image no-border svg-image">
34 ${SVG.getData()}
35 </div>
36 <#else>
37 <#if ImageLarge?? && ImageLarge.getData()?has_content>
38 <img src="${common.getScaledImageURL(ImageLarge.getData(), "bg-image-medium")}" alt="${common.getAltText(ImageLarge.data)}" class="image" loading="lazy"/>
39 ${Copyright}
40 </#if>
41 </#if>
42 </div>
43 </section>
44 <h2>${Headline.getData()}</h2>
45 <#if Text?? && Text.getData()?has_content>
46 <p class="teaser-text">
47 ${Text.getData()}
48 </p>
49 </#if>
50 <#if Button.ButtonInternalLink.getData()?has_content || Button.ButtonExternalLink.getData()?has_content>
51 <div class="button-area">
52 ${ButtonMarkup}
53 </div>
54 </#if>
55 </section>
56 </div>
57 </div>
58 </div>
59 </div>
60
61</section>